//要先安装SOAP，运行命令 npm install soap
const soap = require('soap');

// Web服务的URL
const url = 'http://szlzhkj.x3322.net:21211/wsdl/IFMCommonAPI';

// 创建SOAP请求的参数 - ComStoreAmount只需要传Date_参数
const args = {
    UserCode_: '123',
    UserPassword_: '1234',
    Date_: '2022-01-01', // 只传日期参数
    Company_: '',
    Sales_: '',
    Trader_: '',
    MinNo_: '',
    No_:''
};

// 调用Web服务的方法
soap.createClient(url, function(err, client) {
    if (err) {
        console.error('创建SOAP客户端时出错:', err);
        return;
    }

    // 指定要调用的方法和参数
    client.GetComStoreAmount(args, function(err, result) {
        if (err) {
            console.error('调用Web服务时出错:', err);
            return;
        }

        try {
            // 从结果中提取JSON字符串并解析
            const jsonString = result && result.return && result.return.$value;
            
            if (jsonString) {
                // 解析JSON字符串为对象数组
                const storeData = JSON.parse(jsonString);
                
                // 确保所有字段都被正确处理
                const processedData = storeData.map(item => {
                    return {
                        // 根据实际返回的字段名映射
                        // 以下字段名需要根据实际返回数据进行调整
                        branch_code: item.营业点代码 || item.代码,
                        branch_name: item.营业点名称 || item.名称,
                        product_code: item.商品代码,
                        product_name: item.商品名称,
                        quantity: item.数量,
                        unit: item.单位,
                        unit_price: item.单价,
                        amount: item.金额,
                        cost_price: item.成本,
                        warehouse: item.仓库,
                        warehouse_name: item.仓库名称,
                        // 其他可能的字段...
                    };
                });
                
                console.log(`解析后的库存数据: 共 ${processedData.length} 条记录`);
                
                // 调用入库函数
                saveToDatabase(processedData);
            } else {
                console.error('未从响应中获取到有效的JSON数据');
                console.log('原始返回数据:', result);
                throw new Error('获取数据失败或数据格式不正确');
            }
        } catch (parseError) {
            console.error('解析返回的JSON数据时出错:', parseError);
            console.log('原始返回数据:', result);
            throw new Error('获取数据失败或数据格式不正确');
        }
    });
});

// 数据库保存函数
function saveToDatabase(data) {
    if (!data || data.length === 0) {
        console.error('没有数据可保存');
        return;
    }
    
    console.log(`准备将 ${data.length} 条库存数据保存到数据库`);
    
    // 在这里添加实际的数据库操作代码
    // 例如使用MySQL:
    /*
    const mysql = require('mysql');
    const connection = mysql.createConnection({
        host: 'localhost',
        user: 'username',
        password: 'password',
        database: 'your_database'
    });
    
    connection.connect(function(err) {
        if (err) {
            console.error('连接数据库失败:', err);
            return;
        }
        console.log('数据库连接成功');
        
        // 先清空现有数据（因为这是库存快照）
        connection.query('TRUNCATE TABLE com_store_amount', (truncateError) => {
            if (truncateError) {
                console.error('清空表失败:', truncateError);
                connection.end();
                return;
            }
            
            console.log('已清空现有库存数据，准备插入新数据');
            
            // 批量插入或逐条插入
            data.forEach((record, index) => {
                const query = `INSERT INTO com_store_amount 
                              (branch_code, branch_name, product_code, product_name, 
                               quantity, unit, unit_price, amount, cost_price, warehouse, warehouse_name) 
                              VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
                
                const values = [
                    record.branch_code, record.branch_name, record.product_code, record.product_name,
                    record.quantity, record.unit, record.unit_price, record.amount, record.cost_price,
                    record.warehouse, record.warehouse_name
                ];
                
                connection.query(query, values, (error, results) => {
                    if (error) {
                        console.error(`保存记录 #${index + 1} 时出错:`, error);
                    }
                    
                    // 如果是最后一条记录，关闭连接
                    if (index === data.length - 1) {
                        connection.end();
                        console.log('数据库连接已关闭');
                    }
                });
            });
        });
    });
    */
    
    console.log('数据已准备好入库，请实现实际的数据库连接逻辑');
} 